//
//  WBRootController.swift
//  SinaMicroblog
//
//  Created by 原鹏飞 on 2017/4/2.
//  Copyright © 2017年 YuanPengFei. All rights reserved.
//

import UIKit
import MJRefresh

fileprivate let identifier = "identifier"

class WBRootController: UIViewController {
    //懒加载属性: 下拉刷新控件
    lazy var refreshHeader: MJRefreshNormalHeader = MJRefreshNormalHeader(refreshingTarget: self, refreshingAction: #selector(loadData))
    
    //懒加载属性: 上拉刷新控件
    lazy var refreshFooter: MJRefreshAutoNormalFooter = MJRefreshAutoNormalFooter(refreshingTarget: self, refreshingAction: #selector(loadData))
    
    //懒加载属性: tableView
    lazy var tableView: UITableView = {
        let tableView = UITableView()
        tableView.dataSource = self
        tableView.register(UITableViewCell.self, forCellReuseIdentifier: "identifier")
        return tableView
    }()
    
    //创建访客视图
    var visitorView: WBVisitorView?
    
    //创建字典用来保存访客视图的文本和图片信息
    var visitorDic: [String: Any]?
    
    deinit {
        //移除通知
        print("移除 loginSuccessNotification 通知")
        NotificationCenter.default.removeObserver(self)
    }
    
    override func viewDidLoad() {
        super.viewDidLoad()
        //设置UI
        setupUI()
        
        //添加通知
        NotificationCenter.default.addObserver(self, selector: #selector(loginSuccess), name: loginSuccessNotification, object: nil)
    }
}


// MARK: - 加载数据
extension WBRootController {
    func loadData() {
        print("加载数据...")
    }
}


//MARK: - 设置UI
extension WBRootController {
    func setupUI() {
        //关闭自适应布局
        self.automaticallyAdjustsScrollViewInsets = false
        
        //tableView一定要创建在visitorView的前面(下面)
        setupTableView()
        
        setupVisitorView()
    }
    
    
    /// 设置tableView
    func setupTableView() {
        self.view.addSubview(tableView)
        tableView.snp.makeConstraints { (make) in
            make.left.right.equalTo(self.view)
            make.top.equalTo(self.view).offset(64)
            make.bottom.equalTo(self.view)
        }
        
        tableView.mj_header = refreshHeader
        tableView.mj_footer = refreshFooter
    }
    
    
    /// 加载访客视图
    func setupVisitorView() {
        
        //如果当前是非登录状态, 就加载访客视图
        if WBUserAccount.shared.isLogin == false {
            visitorView = WBVisitorView(frame: self.view.bounds)
            visitorView?.visitorInfo = self.visitorDic
            visitorView?.delegate = self
            self.view.addSubview(visitorView!)
        }
    }
}


//MARK: - 事件处理
extension WBRootController {
    /// 响应 loginSuccessNotification 通知的方法
    func loginSuccess() {
        print("登录成功!")
        //登录成功后移除访客视图
        visitorView?.removeFromSuperview()
        visitorView = nil
        
        //加载数据
        loadData()
    }
}


//MARK: - 弹出登录页面
extension WBRootController:WBVisitorViewDelegate {
    //弹出登录页面
    func login() {
        let loginController = WBLoginController()
        let loginNav = UINavigationController(rootViewController: loginController)
        present(loginNav, animated: true, completion: nil)
    }
}


// MARK: - 实现tableView的数据源方法
extension WBRootController: UITableViewDataSource {
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return 20
    }
    
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        return UITableViewCell()
    }
}
